Various embodiments of this disclosure relate to correlating pseudonoise sequences and, more particularly, to correlating such sequences using a single instruction, multiple data (SIMD) processor.
Pseudonoise sequences are used in many communication systems, notably in wideband code division multiple access (WCDMA), also known as 3G wireless systems, where the sequences are used to “spread” multiple users' transmitted data across a shared channel in such a way that a multiplicity of users can efficiently share the same bandwidth. A “despreading” operation, which separates received signals from different user devices across the shared channel, requires correlation of signals being received with copies of the pseudonoise sequences used by individual user devices to transmit their data.
A pseudonoise sequence is a sequence of complex, purely real, or purely imaginary values, where the real parts and imaginary parts take on only the values +/−1. In other words, the elements of such a sequence are: +/−1 if the sequence is purely real, +/−j if the sequence is purely imaginary, and (+/−1)+/−j if the sequence is complex. An element of a pseudonoise sequence can be represented in a processor using a single bit if the sequence contains only purely real or imaginary values, or by a pair of bits if the sequence elements are complex; for example, with a ‘0’ bit corresponding to +1 and a ‘1’ bit corresponding to −1 for a purely real sequence. Thus, a pseudonoise sequence can be represented in a processor as a vector of bits.
The operation for correlation of received signals is often formulated as follows:
      s    ⁡          (      n      )        =            ∑              m        =        0                    L        -        1              ⁢                  f        ⁡                  (                      Ln            +            m                    )                    ⁢                        ∑                      i            =            0                                M            -            1                          ⁢                              y            ⁡                          (                                                q                  o                                +                i                            )                                ⁢                      c            ⁡                          (                                                q                  o                                +                i                            )                                          In the above, each y is a sample of a received signal, c is the pseudonoise sequence to be correlated to a portion of the single, frepresents a sequence to correct for carrier frequency offset, and s(n) is an initial estimate of the data bit sent by a user device at time n. The inner sum over i is the correlation of the received signal with the pseudonoise sequence.
In WCDMA, a user device transmits data in the form of a series of symbols. A symbol that a device sends may be combined with a device-specific pseudonoise sequence, sometimes referred to a spreading sequence. The despreading operation may correlate a sample of a received signal with a device-specific pseudonoise sequence to extract the part of the signal that was received from the device in question.
A user symbol may be the equivalent of a data bit. The number of elements, K, in a pseudonoise sequence is referred to as the spreading factor. Values of K generally range from 8 or less to 256. To generate an estimate of a device's transmitted symbol value, K samples of the received signal are correlated with K elements of the device's pseudonoise sequence. In some cases, “oversampling” of a received signal is used, in which case the number of samples is a multiple of K. The correlation takes into account that a carrier frequency is offset between the transmitter (i.e., the device) and receiver (e.g., the base station). Compensation for this effect involves incorporating a correction sequence (T in the above equation) in the correlation. Typically, the frequency offset varies slowly over time, but the equation assumes the correction term is approximately constant over blocks of N samples of the received signals. Thus, there are K received samples to process in the despreading per transmitted user symbol. Usually, N is less than K, and there are L blocks of size M, where K=L*M. The term in the correlation equation associated with the frequency offset correction can therefore be applied once per block of size N (of which there are L per symbol). In the above equation, q0 represents the first received sample for symbol ‘n’ in block ‘m’.
Performance requirements for the despreading function in typical WCDMA base stations have led to the use of special-purpose hardware accelerators to implement the operations shown in the equation above, with data moved by a processor to and from this hardware by direct memory access (DMA) or a related mechanism.